Examen Unidad 3 Backend

Aplicaciones Web (UTH 2025-3) Maestro: Bernardo Prado Díaz

Fechas de Entrega y Calificación

Tu calificación final dependerá del periodo en el que entregues tu proyecto. Cuanto antes completes y subas tu evidencia, mayor será tu evaluación. Pero cada error ú omisión restará calificación

E = ESTRATÉGICO (9.5 - 10)

Calificación final: 10

Entrega del 10 al 14 de noviembre de 2025

Hora límite: 15:00 — Zona: America/Hermosillo
A = AUTÓNOMO (8.50 - 9.49)

Calificación final: 9.0

Entrega del 14 de Nov. 15:01pm al 17 de noviembre de 2025

Hora límite: 15:00 — Zona: America/Hermosillo
B = BÁSICO (7.50 - 8.49)

Calificación final: 8.0

Entrega del 17 de Nov. 15:01pm al 21 de noviembre de 2025

Hora límite: 15:00 — Zona: America/Hermosillo
R = RECEPTIVO (6.50 - 7.49)

Calificación final: 7.0

Entrega el 21 de Nov. 15:01pm. al 24 de noviembre de 2025

Hora límite: 15:00 — Zona: America/Hermosillo
NA = PREFORMAL (0 - 6.49)

Calificación final: 6.0

Entrega después de las 15:01 del 24 de noviembre de 2025

Hora límite: Expira Entrega — Zona: America/Hermosillo

Importante:

el no entregar nada seria obtener 0 (Cero) para contabilizar su promedio

Requisitos Técnicos del Proyecto (Sistema Web)

  • Tecnología:  Desarrollado en  Django con Python 3.10+.
  • Base de Datos:  Uso obligatorio de  MySQL (o MariaDB) configurado.
  • Modelos:  Implementación de  5 modelos de BD  (con relaciones OneToMany y ManyToMany).
  • CRUD Completo:  Tener  5 tablas  con Create, Read, Update, Delete (CRUD) funcionales.
  • Autenticación:  Sistema de Login y control de acceso por roles.

Estructura de las Tablas de la Base de Datos

Estas son las 5 tablas principales que debe contener tu sistema con sus respectivos atributos:

1. Categoría

  • id (AutoField, Primary Key)
  • nombre (CharField, máx. 100 caracteres)
  • descripcion (TextField, opcional)

2. Proveedor

  • id (AutoField, Primary Key)
  • nombre (CharField, máx. 200 caracteres)
  • telefono (CharField, máx. 20 caracteres, opcional)
  • email (EmailField, opcional)
  • direccion (TextField, opcional)

3. Cliente

  • id (AutoField, Primary Key)
  • nombre (CharField, máx. 200 caracteres)
  • email (EmailField, único)
  • telefono (CharField, máx. 20 caracteres, opcional)
  • direccion (TextField, opcional)

4. Producto

  • id (AutoField, Primary Key)
  • nombre (CharField, máx. 200 caracteres)
  • descripcion (TextField, opcional)
  • precio (DecimalField, máx. 10 dígitos, 2 decimales)
  • stock (IntegerField, default=0)
  • categoria (ForeignKey → Categoría, on_delete=CASCADE)
  • proveedores (ManyToManyField → Proveedor)

5. Venta

  • id (AutoField, Primary Key)
  • cliente (ForeignKey → Cliente, on_delete=CASCADE)
  • producto (ForeignKey → Producto, on_delete=CASCADE)
  • cantidad (IntegerField, default=1)
  • fecha (DateTimeField, auto_now_add=True)
  • total (DecimalField, máx. 10 dígitos, 2 decimales)

Nota importante: Asegúrate de que todas las tablas tengan estos atributos mínimos. Puedes agregar más campos si lo consideras necesario, pero estos son obligatorios para cumplir con los requisitos del examen.

Sistema de Roles y Privilegios

El sistema debe tener 4 roles de usuario con diferentes niveles de acceso y permisos:

1. Administrador

Usuario: administrador / Password: admin123

Privilegios (Acceso Total):

  • Ver, Crear, Editar y Eliminar en todas las tablas (Categoría, Proveedor, Cliente, Producto, Venta)
  • ✅ Acceso completo al panel de administración (/admin/)
  • ✅ Puede gestionar usuarios y asignar roles
  • ✅ Acceso a todos los reportes y estadísticas
  • ✅ Sin restricciones de ningún tipo

2. Gerente

Usuario: gerente / Password: gerente123

Privilegios (Crear y Editar):

  • Ver todas las tablas (Categoría, Proveedor, Cliente, Producto, Venta)
  • Crear nuevos registros en todas las tablas
  • Editar registros existentes en todas las tablas
  • NO puede Eliminar ningún registro
  • ✅ Acceso a reportes y estadísticas
  • ❌ NO tiene acceso al panel /admin/

3. Vendedor

Usuario: vendedor / Password: vendedor123

Privilegios (Solo Lectura):

  • Solo Ver todas las tablas (Categoría, Proveedor, Cliente, Producto, Venta)
  • NO puede Crear nuevos registros
  • NO puede Editar registros existentes
  • NO puede Eliminar registros
  • ✅ Puede consultar información para asesorar ventas
  • ❌ NO tiene acceso al panel /admin/

4. Cliente

Usuario: cliente / Password: cliente123

Privilegios (Acceso Muy Limitado):

  • Ver Productos y Categorías (catálogo público)
  • Ver y Editar únicamente su propio perfil (Mi Perfil)
  • Ver su propio historial de compras (Mis Compras)
  • NO puede ver el módulo de Clientes (otros clientes)
  • NO puede ver Proveedores ni Ventas generales
  • NO puede Crear, Editar ni Eliminar ningún registro
  • ❌ Acceso restringido solo a información pública y sus propios datos
📊 Tabla Resumen de Permisos:
Acción Admin Gerente Vendedor Cliente
Ver registros ✅ Todos ✅ Todos ✅ Todos ⚠️ Solo Productos
Crear nuevos ✅ Sí ✅ Sí ❌ No ❌ No
Editar existentes ✅ Sí ✅ Sí ❌ No ⚠️ Solo su perfil
Eliminar registros ✅ Sí ❌ No ❌ No ❌ No
Acceso /admin/ ✅ Sí ❌ No ❌ No ❌ No

Importante para la demostración en el video: Debes mostrar el funcionamiento de los 4 roles, iniciando sesión con cada usuario y demostrando que tienen los permisos correctos. Intenta realizar acciones no permitidas (crear, editar, eliminar) para demostrar que el sistema las bloquea correctamente con mensajes de error.

Módulo de Ventas y Estadísticas

El sistema debe incluir un módulo completo de ventas con las siguientes funcionalidades:

Funcionalidades Requeridas:

  • Agregar nueva venta: Formulario para registrar ventas (cliente, producto, cantidad)
  • Listar ventas: Mostrar todas las ventas registradas en el sistema
  • Ver detalles: Información completa de cada venta (fecha, total, cliente, producto)
  • Filtrar por fecha: Opción para filtrar ventas por rango de fechas
  • Estadísticas visuales: Gráficas y reportes con las siguientes métricas

📊 Estadísticas que debe generar el sistema:

  • Total de ventas: Suma total de todas las ventas (en dinero)
  • Número de ventas: Cantidad total de transacciones realizadas
  • Productos más vendidos: Top de productos con mayor cantidad vendida
  • Ventas por producto: Gráfico de barras mostrando ventas por cada producto
  • Clientes frecuentes: Clientes con más compras realizadas
  • Ventas por fecha: Filtrar y ver estadísticas por periodo

Referencia Visual: Así debe verse tu módulo de ventas

Módulo de Ventas - Referencia

Imagen de referencia: Tu sistema debe verse similar a esta captura, mostrando el formulario de ventas y las estadísticas

Requisito obligatorio: En el video debes demostrar que puedes:

  • Agregar al menos 3 ventas nuevas
  • Mostrar que las estadísticas se actualizan automáticamente
  • Filtrar ventas por fecha y ver cómo cambian las estadísticas
  • Mostrar la gráfica de ventas por producto funcionando
  • Demostrar que el total de ventas se calcula correctamente

Requisitos del Video de Presentación (Evidencia)

  • Duración:  No hay tiempo Máximo.   Los minutos que seán, no importa que se grabe errores. Si hay correción.
  • Presentador:  Tu rostro debe ser visible al inicio y durante todo el video dando explicación. Esquina inferior Izq.
  • Demostración:  Debe mostrar el funcionamiento  completo del CRUD  y el sistema de autenticación.
  • Entrega:  Subir a  Google Drive (con permisos de visualización pública) y adjuntar el enlace. Sin restricciones.